package com.zsg.androidsipphone.util;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import com.zsg.androidsipphone.event.NetInfoEvent;
import org.greenrobot.eventbus.EventBus;

import java.io.IOException;

/**
 * 描述：获取系统服务数据
 *
 * @author zsg
 * 标签：
 */
public class MySystemUtil {
    /**
     * 检查服务器连接是否可用
     * */
    private static void serverConnect(Context context) {

        if(isNetworkAvailable(context)){
            ThreadPoolConfig.buildMyThreadPool().execute(()->{
                try {
                    //测试服务器连接
                    String result = OkHttpUtil.doGet(Api.TEST);
                    if("ok".equals(result)){
                        //发送事件ok
                        EventBus.getDefault().post(new NetInfoEvent("serverOk"));
                        //更新服务器网络状态
                        context.getSharedPreferences("netInfo",0)
                                .edit().putBoolean("server",true).apply();
                    }else {
                        //发送事件ok
                        EventBus.getDefault().post(new NetInfoEvent("serverEr"));
                        //更新服务器网络状态
                        context.getSharedPreferences("netInfo",0)
                                .edit().putBoolean("server",false).apply();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    //发送事件
                    EventBus.getDefault().post(new NetInfoEvent("IOException"));
                }
            });
        }else {
            Log.d("----net---","Network Unavailable");
            //发送事件
            EventBus.getDefault().post(new NetInfoEvent("networkEr"));
        }
    }

    /**
     * 检查网络是否可用
     *
     * @param context 上下文
     * @return boolean
     */
    public static boolean isNetworkAvailable(Context context) {
        // 获取手机所有连接管理对象（包括对wi-fi,net等连接的管理）
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager == null) {
            return false;
        } else {
            // 获取NetworkInfo对象
            NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
            if (networkInfo != null && networkInfo.length > 0) {
                for (NetworkInfo info : networkInfo) {
                    Log.i("网络", "isNetworkAvailable: " + "=状态=" + info.getState() + "=类型=" + info.getTypeName());
                    // 判断当前网络状态是否为连接状态
                    if (info.getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }


}


